//编译环境：VS2019
#include<stdio.h>
#pragma warning(disable:4996);

/*
* 【冒泡算法】：每次比较两个相邻的元素，如果顺序不对则把它们交换过来
*/
int main()
{
	int a[100], i, j, t, n;
	/*输入一个数n，接下来有n个数*/
	scanf("%d", &n);
	/*循环读入n个数到数组a中*/
	for (i = 1; i <= n; i++) {
		scanf("%d",&a[i]);
	}
	/*冒泡排序的核心部分*/
	/*n个数排序，只用进行n-1趟*/
	for (i = 1; i <= n - 1;i++) {
		for (j = 1; j <= n - i; j++) {
			/*从第一位数开始比较直至最后一个尚未归为的数*/ 
			if (a[j]<a[j+1]) {/*比较大小并交换*/
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
		}
	}
	/*输出结果*/
	for (i = 1; i <= n;i++) {
		printf("%d ",a[i]);
	}
	//getchar();
	//getchar();
	
	return 0;
}


